package br.com.laeventos.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import br.com.laeventos.model.Atividade;
import br.com.laeventos.model.Participante;
import br.com.laeventos.model.relacaoAtividadeParticipante;

public class relacaoAtividadeParticipanteDAO {
	
	public static Connection connection = null;
	
	public boolean inscreverAtividade (relacaoAtividadeParticipante rap) throws Exception {
		
		String sql = "INSERT INTO participante_atividade (id_relacao, id_participante, codigo_atividade, data_pagamento) VALUES(default, ?, ?, ?)";
        PreparedStatement ps = connection.prepareStatement(sql);
        ps.setInt(1, rap.getCodParticipanteRelacionado());
        ps.setInt(2, rap.getCodAtividadeRelacionada());
        ps.setDate(3, rap.getDataPagamento());
        int resultado = ps.executeUpdate();
        if (resultado == 0)
        	return false;
        else
        	return true;
	}
	
	public boolean retirarAtividade (relacaoAtividadeParticipante rap) throws Exception {
		String sql = "DELETE FROM participante_atividade WHERE id_relacao="+rap.getCodigoRelacao();
        PreparedStatement ps = connection.prepareStatement(sql);
        int resultado = ps.executeUpdate();
        if(resultado == 0){
            return false;
        }else{
            return true;
        }
	}
	
	public ArrayList<Participante> participantesDeAtividade (Atividade atividade) throws Exception {
		
		ArrayList<Integer> aux = new ArrayList<>();
		String sqlAux = "SELECT id_participante FROM participante_atividade WHERE codigo_atividade = "+atividade.getCodigo();
		PreparedStatement psa = connection.prepareStatement(sqlAux);
		ResultSet rsa = psa.executeQuery();
		while (rsa.next()) {
			int inteiro = rsa.getInt("id_paticipante");
			aux.add(inteiro);
		}
		ArrayList<Participante> lista  = new ArrayList<>();
		
		for (int e:aux){
			String sql = "SELECT * FROM participante WHERE id_paticipante = "+e;
			PreparedStatement ps = connection.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();
			while(rs.next()) {
				Participante p = new Participante();
				int id = rs.getInt("id_participante");
				String cpf = rs.getString("cpf");
				String nome = rs.getString("nome_participante");
				Date dataNasc = rs.getDate("data_nascimento");
				String endereco = rs.getString("endereco");
				String cidade = rs.getString("cidade");
				String uf = rs.getString("uf");
				String cep = rs.getString("cep");
				String telefone = rs.getString("telefone");
				String email = rs.getString("email");
				p.setId(id);
				p.setCpf(cpf);
				p.setNome(nome);
				p.setDataNasc(dataNasc);
				p.setEndereco(endereco);
				p.setCidade(cidade);
				p.setUf(uf);
				p.setCep(cep);
				p.setTelefone(telefone);
				p.setEmail(email);
				lista.add(p);
			}
		}
		return lista;
	}
	
	public ArrayList<Atividade> atividadesDoParticipante (Participante participante) throws Exception {

		ArrayList<Integer> aux = new ArrayList<>();
		String sqlAux = "SELECT codigo_atividade FROM participante_atividade WHERE id_participante = "+participante.getId();
		PreparedStatement psa = connection.prepareStatement(sqlAux);
		ResultSet rsa = psa.executeQuery();
		while (rsa.next()) {
			int inteiro = rsa.getInt("codigo_atividade");
			aux.add(inteiro);
		}
		ArrayList<Atividade> lista  = new ArrayList<>();
		
		for (int e:aux){
			String sql = "SELECT * FROM atividade WHERE codigo_atividade = "+e;
			PreparedStatement ps = connection.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();
			while(rs.next()) {
				Atividade a = new Atividade();
				int codigo = rs.getInt("codigo");
				String titulo = rs.getString("titulo");
				String descricao = rs.getString("descricao");
				String ministrante = rs.getString("ministrante");
				int qtdParticipantes = rs.getInt("qtd_participantes");
				double valor = rs.getDouble("valor_atividade");
				int codEventoRelacionado = rs.getInt("id_evento");
				a.setCodigo(codigo);
				a.setTitulo(titulo);
				a.setDescricao(descricao);
				a.setMinistrante(ministrante);
				a.setQtdParticipantes(qtdParticipantes);
				a.setValor(valor);
				a.setCodEventoRelacionado(codEventoRelacionado);
				lista.add(a);
			}
		}
		return lista;
	}
	
	public ArrayList<Participante> participantesPagos (Atividade atividade) throws Exception {
		ArrayList<Integer> aux = new ArrayList<Integer>();
		String sqlAux = "SELECT id_participante FROM participante_atividade WHERE codigo_atividade = "+atividade.getCodigo();
		PreparedStatement psa = connection.prepareStatement(sqlAux);
		ResultSet rsa = psa.executeQuery();
		while (rsa.next()) {
			int inteiro = rsa.getInt("id_paticipante");
			aux.add(inteiro);
		}
		ArrayList<Participante> lista  = new ArrayList<>();
		
		for (int e:aux){
			String sql = "SELECT * FROM participante, participante_atividade WHERE participante.id_paticipante = "+e+" and participante_atividade.data_pagamento is not null";
			PreparedStatement ps = connection.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();
			while(rs.next()) {
				int id = rs.getInt("id_participante");
				String cpf = rs.getString("cpf");
				String nome = rs.getString("nome_participante");
				Date dataNasc = rs.getDate("data_nascimento");
				String endereco = rs.getString("endereco");
				String cidade = rs.getString("cidade");
				String uf = rs.getString("uf");
				String cep = rs.getString("cep");
				String telefone = rs.getString("telefone");
				String email = rs.getString("email");
				Participante p = new Participante();
				p.setId(id);
				p.setCpf(cpf);
				p.setNome(nome);
				p.setDataNasc(dataNasc);
				p.setEndereco(endereco);
				p.setCidade(cidade);
				p.setUf(uf);
				p.setCep(cep);
				p.setTelefone(telefone);
				p.setEmail(email);
				lista.add(p);
			}
		}
		return lista;
		
	}
	
	public ArrayList<Participante> participantesNaoPagos (Atividade atividade) throws Exception {
		ArrayList<Integer> aux = new ArrayList<Integer>();
		String sqlAux = "SELECT id_participante FROM participante_atividade WHERE codigo_atividade = "+atividade.getCodigo();
		PreparedStatement psa = connection.prepareStatement(sqlAux);
		ResultSet rsa = psa.executeQuery();
		while (rsa.next()) {
			int inteiro = rsa.getInt("id_paticipante");
			aux.add(inteiro);
		}
		ArrayList<Participante> lista  = new ArrayList<>();
		
		for (int e:aux){
			String sql = "SELECT * FROM participante, participante_atividade WHERE participante.id_paticipante = "+e+" and participante_atividade.data_pagamento is null";
			PreparedStatement ps = connection.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();
			while(rs.next()) {
				int id = rs.getInt("id_participante");
				String cpf = rs.getString("cpf");
				String nome = rs.getString("nome_participante");
				Date dataNasc = rs.getDate("data_nascimento");
				String endereco = rs.getString("endereco");
				String cidade = rs.getString("cidade");
				String uf = rs.getString("uf");
				String cep = rs.getString("cep");
				String telefone = rs.getString("telefone");
				String email = rs.getString("email");
				Participante p = new Participante();
				p.setId(id);
				p.setCpf(cpf);
				p.setNome(nome);
				p.setDataNasc(dataNasc);
				p.setEndereco(endereco);
				p.setCidade(cidade);
				p.setUf(uf);
				p.setCep(cep);
				p.setTelefone(telefone);
				p.setEmail(email);
				lista.add(p);
			}
		}
		return lista;
	}
}
